# 导入相关的模块
import datetime

from langchain_deepseek import ChatDeepSeek
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

@tool
def get_current_date(input: str = "") -> str:
    """
    获取当前日期并以指定格式返回

    Args:
        input (str): 输入参数，本函数不需要实际输入，但为了兼容LangChain工具系统而添加

    Returns:
        str: 当前日期字符串，格式为 "YYYY-MM-DD"
    """
    print("input:",input)
    return datetime.datetime.today().strftime("%Y-%m-%d")


# 创建ChatDeepSeek模型实例
# 该代码初始化了一个ChatDeepSeek聊天模型实例，用于与DeepSeek API进行交互。
# 参数说明:
#   model: 指定使用的模型名称，这里使用"deepseek-chat"模型
#   api_key: API访问密钥，用于身份验证
#   temperature: 控制生成文本的随机性，值越高结果越随机，0.7为中等随机性
#   max_tokens: 最大生成令牌数，None表示使用模型默认值
#   timeout: API请求超时时间，设置为60秒
#   max_retries: 最大重试次数，请求失败时最多重试2次
model = ChatDeepSeek(
    model="deepseek-chat",
    api_key="sk-dc3f063534c542a3a403760655d3eae2",
    temperature=0.7,
    max_tokens=None,
    timeout=60,
    max_retries=2,
)

from langchain.agents import create_agent

agent = create_agent(
    model=model,
    tools=[get_current_date],
    system_prompt="你是⼀个乐于助⼈的助⼿。当⽤户询问当前⽇期时，请使⽤get_current_date⼯具。"
)

# Run the agent
res = agent.invoke(
    {"messages": [{"role": "user", "content": "今天是几月几号？"}]}
)
print(res)

# # 流式输出
# for chunk in agent.stream(
#         {"messages": [{"role": "user", "content": "你是谁，能帮我解决什么问题？"}]},
#         stream_mode="messages"
# ):
#     print(chunk[0].content)
